package com.zhuoyue.system.service;

import com.zhuoyue.common.core.domain.entity.TblProductBrand;
import com.zhuoyue.common.core.domain.entity.TblProductClassify;
import com.zhuoyue.common.core.domain.entity.TblProductSeries;

import java.util.List;

/**
 * @Author zhanghui
 * @Date: 2021/08/04/9:06
 * @Description: 产品管理
 */
public interface ISysProductManageService {
    /**
     * 查询品牌列表
     *
     * @param brand
     * @return
     */
    List<TblProductBrand> selectBrandList(TblProductBrand brand);

    TblProductBrand selectBrandById(Long id);


    /**
     * app查询品牌列表
     *
     * @param brand
     * @return
     */
    List<TblProductBrand> selectBrandListForApp(TblProductBrand brand);

    /**
     * 校验品牌名称是否唯一
     *
     * @param brandName
     * @return
     */
    String checkBrandNameUnique(String brandName);

    /**
     * 新增品牌
     *
     * @param brand
     * @return
     */
    int insertBrand(TblProductBrand brand);

    /**
     * 修改品牌信息
     *
     * @param brand
     * @return
     */
    int updateBrand(TblProductBrand brand);

    /**
     * 删除品牌信息
     *
     * @param brandIds
     * @return
     */
    int deleteBrandByIds(Long[] brandIds);

    /**
     * 查询产品分类列表
     *
     * @param classify
     * @return
     */
    List<TblProductClassify> selectClassifyList(TblProductClassify classify);


    /**
     * app查询产品分类列表
     *
     * @param classify
     * @return
     */
    List<TblProductClassify> selectClassifyListForApp(TblProductClassify classify);

    /**
     * 根据ID查询产品分类
     *
     * @param classifyId
     * @return
     */
    TblProductClassify selectClassifyById(Long classifyId);

    /**
     * 查询某个产品分类的子分类数量
     *
     * @param parentClassifyId
     * @return
     */
    int selectClassifyChildrenCountByParentId(Long parentClassifyId);

    /**
     * 添加产品分类
     *
     * @param classify
     * @return
     */
    int insertClassify(TblProductClassify classify);

    /**
     * 修改产品分类
     *
     * @param classify
     * @return
     */
    int updateClassify(TblProductClassify classify);

    /**
     * 删除产品分类
     *
     * @param classifyIds
     * @return
     */
    int deleteClassifyByIds(Long[] classifyIds);

    /**
     * 查询产品分类系列
     *
     * @param series
     * @return
     */
    List<TblProductSeries> selectSeriesList(TblProductSeries series);


    /**
     * app查询产品分类系列
     *
     * @param series
     * @return
     */
    List<TblProductSeries> selectSeriesListForApp(TblProductSeries series);

    /**
     * 根据ID查询系列
     *
     * @param seriesId
     * @return
     */
    TblProductSeries selectSeriesById(Long seriesId);

    /**
     * 根据分类ID查询系列
     *
     * @param classifyId
     * @return
     */
    List<TblProductSeries> selectSeriesByClassifyId(Long classifyId);

    /**
     * 添加产品系列
     *
     * @param series
     * @return
     */
    int insertSeries(TblProductSeries series);

    /**
     * 修改产品系列
     *
     * @param series
     * @return
     */
    int updateSeries(TblProductSeries series);

    /**
     * 删除产品系列
     *
     * @param seriesIds
     * @return
     */
    int deleteSeriesByIds(Long[] seriesIds);

    /**
     * 查询某个产品分类下产品系列的数量
     *
     * @param classifyId
     * @return
     */
    int selectSeriesCountByClassifyId(Long classifyId);


    /**
     * 产品发布
     *
     * @return
     */
    Boolean releaseData();
}
